import os
import re
import chardet

# 目标目录（存放SRT文件的路径）
srt_folder = r"D:\subtitle\moves\2024\1月"
txt_folder = r"D:\subtitle\moves\2024\1月\txt"  # 存放转换后的TXT文件

# 确保TXT文件夹存在
os.makedirs(txt_folder, exist_ok=True)

# 遍历目录中的所有 .srt 文件
for filename in os.listdir(srt_folder):
    if filename.endswith(".srt"):
        srt_path = os.path.join(srt_folder, filename)
        txt_path = os.path.join(txt_folder, filename.replace(".srt", ".txt"))

        # 检测文件的编码
        with open(srt_path, 'rb') as file:
            raw_data = file.read()
            result = chardet.detect(raw_data)
            encoding = result['encoding']

        # 使用检测到的编码打开文件
        with open(srt_path, 'r', encoding=encoding) as file:
            srt_content = file.read()

        # 使用正则表达式去除 SRT 的时间戳和编号
        subtitles = re.sub(r"\d+\n\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}\n", "", srt_content)
        subtitles = re.sub(r"\n+", "\n", subtitles).strip()  # 清理多余的换行符

        # 去掉被[]和<>括起来的文字
        subtitles = re.sub(r"\[.*?\]", "", subtitles)  # 去除 [] 括起来的文字
        subtitles = re.sub(r"<.*?>", "", subtitles)  # 去除 <> 括起来的文字

        # 去掉以 ♪ 开头的句子
        subtitles = re.sub(r"^♪.*", "", subtitles, flags=re.MULTILINE)  # 去掉以 ♪ 开头的句子
        subtitles = re.sub(r"^- ♪.*", "", subtitles, flags=re.MULTILINE)  # 去掉以 ♪ 开头的句子

        # 去掉所有的 - 符号
        subtitles = re.sub(r"-", "", subtitles)  # 去掉所有的 - 符号

        # 将提取的字幕写入TXT文件
        with open(txt_path, "w", encoding="utf-8") as file:
            file.write(subtitles)

        print(f"转换完成: {txt_path}")

print("所有SRT文件已成功转换为TXT！")
